
package org.sql.commands.exception;

// *************************************************************************/
// Charada Soft
// Area de Desarrollo de Sistemas de Información
// *************************************************************************/
// Proyecto : java connector sql
// Archivo : DMLException.java
// Descripcion : Clase DMLException
// *************************************************************************/
// Version : 1.0.5
// Fecha de Creación: 30 de Junio de 2014
// Author : Daniel Andres Castillo Pedroza
// *************************************************************************/

public class DMLException extends Exception {
    
    // Atributos estáticos de la clase DMLException
    
    public static final int TABLE_UNDEFINED = 1;
    public static final int VALUES_UNDEFINED = 2;
    public static final int COLUMNS_UNDEFINED = 3;
    public static final int TABLES_UNDEFINED = 4;
    public static final int CONDITIONS_UNDEFINED = 5;
    public static final int FILTERS_UNDEFINED = 6;
    
    // Atributos de la clase DMLException
    
    private int errorCode;
    
    // Constructor de la clase DMLException
    
    public DMLException(int errorCode) {
      super(); setErrorCode(errorCode);
    }
    
    // Metodos de la clase DateException
    
    /**
      * Este método permite obtener el código generado en la Excepción.
      * @return Retorna el código en un dato <code>int</code>.
    */

    public int getErrorCode() {
      return errorCode;
    }

    /**
      * Este método permite establecer el código generado en la Excepción.
      * Donde el código se establece con un dato <code>int</code>.
      * @param errorCode Código de Error generado en la Excepción
    */
    
    private void setErrorCode(int errorCode) {
      this.errorCode = errorCode;
    }
    
    /**
      * Este método permite obtener un Mensaje a partir del Código de
      * Error generado por la Excepción. Donde el código del error se 
      * establece con un dato <code>int</code>.
      * @param errorCode Código de Error generado en la excepcion
      * @return Retorna el mensaje en un objeto <code>String</code>.
    */
    
    private String getMessage(int errorCode) {
      switch (errorCode) {
        // Error: No ha definido Nombre de Tabla
        case (TABLE_UNDEFINED) :
          return "DMLException: No ha definido la Tabla del Comando a ejecutar";
            
        // Error: No ha definido Cantidad de Datos
        case (VALUES_UNDEFINED) :
          return "DMLException: No ha definido la cantidad correctas de Values";
            
        // Error: No ha definido Columnas del Comando
        case (COLUMNS_UNDEFINED) :
          return "DMLException: No ha definido las columnnas del Comando";
            
        // Error: No ha definido Tablas del Comando
        case (TABLES_UNDEFINED) :
          return "DMLException: No ha definido las tablas del Comando";
            
        // Error: No ha definido Condiciones del Filtro
        case (CONDITIONS_UNDEFINED) :
          return "DMLException: No ha definido las condiciones del Filtro";
            
        // Error: No ha definido Filtros de la Clausula Where
        case (FILTERS_UNDEFINED) :
          return "DMLException: No ha definido los Filtros del Where";
        
        // Error al tratar de objeto Date
        default :
          return "DMLException: Ocurrio un error al Tratar de crear el Comando DML";
      }
    }
    
    // Metodos sobreescritos de la clase DateException
    
    @Override
    public String getMessage() {
      return getMessage(getErrorCode());
    }
}